#include "../inc/slider.h"

// Slider 构造函数，初始化滑动条
Slider::Slider(UI_Object* parent)
{
  // 创建一个 LVGL 滑动条对象，并将其父对象设置为传入的 parent
  this_object = lv_slider_create(parent->get_lv_obj_t());

  // 将滑动条居中显示
  lv_obj_center(this_object);

  // 设置滑动条的默认范围为 0 到 255
  lv_slider_set_range(this_object, 0, 255);
}

// Slider 析构函数
Slider::~Slider()
{
  // 析构函数内容为空
}

// 隐藏滑动条的滑块
void Slider::hide_knob()
{
  // 定义一个静态样式变量
  static lv_style_t style_knob_hidden;

  // 初始化样式
  lv_style_init(&style_knob_hidden);

  // 设置滑块的背景不透明度为透明
  lv_style_set_bg_opa(&style_knob_hidden, LV_OPA_TRANSP);

  // 设置滑块的边框不透明度为透明
  lv_style_set_border_opa(&style_knob_hidden, LV_OPA_TRANSP);

  // 将样式应用到滑动条的滑块部分
  lv_obj_add_style(this_object, &style_knob_hidden, LV_PART_KNOB);
}

// 设置滑动条的范围
void Slider::set_range(int32_t min, int32_t max)
{
  // 设置滑动条的最小值和最大值
  lv_slider_set_range(this_object, min, max);
}

// 设置滑动条的值
void Slider::set_value(int32_t value)
{
  // 设置滑动条的当前值，并启用动画效果
  lv_slider_set_value(this_object, value, LV_ANIM_ON);
}